<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 寄生继承  
        // 允许一个对象从另外一个对象继承属性  不需要通过构造函数  
        // Object.create(对象)
        // 这个参数是个对象 
        // 返回值是个对象  具备了参数对象的属性
        // 

        // 简单版的寄生继承  
        // var  person = {
        //     name:'张三',
        //     age:18
        // }

        // var child = Object.create(person);
        // console.log(child.name);
        // console.log(child.age);
        // child 是子对象  person 是父对象
        // child 继承person的属性   



    // 寄生+组合继承 
        function Person(name,age){
            this.name = name;
            this.age = age;

        }

        Person.prototype.sayHello = function(){
            console.log(this.name+'说:'+'hello world');
        }

       function Student(gender,...args){
            this.gender = gender;
            Person.call(this,...args)
       }

       Student.prototype = Object.create(Person.prototype);
    //    Object.create(Person.prototype);得到一个对象
    // 这个对象的原型  是 Person的原型对象
       // 子类的原型   继承 父类的原型对象
       Student.prototype.constructor = Student;
       // 目的是 让 Student的实例 可以访问 Student构造函数的属性和方法

       const s1 = new Student('男','赵六',19);
    //    s1.sayHello()
       console.log(s1)
    //    s1.sayHello()






    </script>
</body>

</html>